
import bpy

from 节点.全局控制.Node.节点和插座基类 import bl_节点基类

import Core.bl_UI配色 as UI配色

import engine.initLIB.load_dll as engineLib
import ctypes







engineLib.flexCAPI.f_创建I32_Array1D_重组为Array2D节点.restype = ctypes.c_bool
engineLib.flexCAPI.f_创建Array删除元素节点.restype = ctypes.c_bool







class C_Node_Array1D_添加元素节点(bl_节点基类.C_Node_基类):
	bl_dname = 'bl_node_Array1D_添加元素节点'
	bl_label = 'Array1D_添加元素节点'
	
	def init(self, context):
		super(C_Node_Array1D_添加元素节点, self).f_init(context)
		self.inputs.new('C_Socket_Vector模板', name='源')
		self.inputs.new('C_Socket_UI32', name='index')
		self.outputs.new('C_Socket_I32_Array1D', name='var')
		self.f_toCPP(self.id_data)

		

	def f_toCPP(self, tree):
		是否更新 = engineLib.flexCAPI.f_创建I32_Array1D_重组为Array2D节点(ctypes.c_wchar_p(tree.name), ctypes.c_wchar_p(self.name), self.f_getPyObject(tree));
		if 是否更新 :
			self.inputs['列数'].f_update()
			self.use_custom_color = True
			self.color = UI配色.g_内部节点颜色

			
class C_NODE_MENU_Array1D_添加元素节点(bpy.types.Operator):
	bl_idname = 'node.create_node_array1d_add_enm'
	bl_label = 'Array1D_添加元素节点'
	bl_options = {'REGISTER', 'UNDO'}
	def execute(self, context):
		bpy.ops.node.add_node(type='C_Node_Array1D_添加元素节点', use_transform=True)
		return {'FINISHED'}












class C_Node_Array_删除元素节点(bl_节点基类.C_Node_基类):
	bl_dname = 'bl_node_Array_删除元素节点'
	bl_label = 'Array 删除元素节点'
	
	def init(self, context):
		super(C_Node_Array_删除元素节点, self).f_init(context)
		self.inputs.new('C_Socket_Vector模板', name='源')
		self.inputs.new('C_Socket_UI32_Array1D', name='index')
		self.f_toCPP(self.id_data)
		
	def f_toCPP(self, tree):
		是否更新 = engineLib.flexCAPI.f_创建Array删除元素节点(ctypes.c_wchar_p(tree.name), ctypes.c_wchar_p(self.name), self.f_getPyObject(tree));
		if 是否更新 :
			self.use_custom_color = True
			self.color = UI配色.g_内部节点颜色
			
class C_NODE_MENU_Array1D_删除元素节点(bpy.types.Operator):
	bl_idname = 'node.create_node_array_remove_enm'
	bl_label = 'Array 删除元素节点'
	bl_options = {'REGISTER', 'UNDO'}
	def execute(self, context):
		bpy.ops.node.add_node(type='C_Node_Array_删除元素节点', use_transform=True)
		return {'FINISHED'}









classes = (
	C_Node_Array1D_添加元素节点,
	C_NODE_MENU_Array1D_添加元素节点,

	C_Node_Array_删除元素节点,
	C_NODE_MENU_Array1D_删除元素节点,

)

def register():
	for c in classes:
		bpy.utils.register_class(c)
		
def unregister():
	for c in classes:
		bpy.utils.unregister_class(c)







